/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 123
 * Date: 2023-05-26
 * Time: 20:11
 */
public class MyQueue {
    private int[] elem ;
    private int front ;
    private int rear ;

    public MyQueue(int k) {
      this.elem = new int[k+1] ;
    }

    public boolean enQueue(int value) {
      if(isFull()){
          return false ;
      }
      elem[rear] = value ;
      rear = (rear+1) % elem.length ;
      return true ;
    }

    public boolean deQueue() {
        if(isFull()){
            return false ;
        }
        front = (front +1) % elem.length ;
        return true ;
    }

    public int Front() {
        if(isEmpty()){
            return -1;
        }
        return elem[front] ;
    }

    public int Rear() {
        if(isEmpty()){
            return -1 ;
        }
        int index = (this.rear == 0 )?(this.elem.length - 1):rear-1 ;
          return elem[index] ;
    }

    public boolean isEmpty() {
        if(rear == front && rear == 0){
            return true ;
        }
        return false ;
    }

    public boolean isFull() {

        if((rear + 1)%this.elem.length == front){
            return true ;
        }
        return false ;
    }


}
